package com.huqiwen.chart;

import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

import ChartDirector.AngularMeter;
import ChartDirector.Chart;
import ChartDirector.ChartViewer;

import com.huqiwen.test.DemoModule;

public class MeterDemo implements DemoModule {
	public String toString(){
		return "仪表盘示例";
	}
	public int getNoOfCharts(){return 1;}
	
	public void createChart(ChartViewer viewer,int index){
		double value = 30.5;
		//创建一个AngularMeter对象，大小为200*115
		//并设置背影颜色，黑色边框，2个像素的边和边缘
		AngularMeter m = new AngularMeter(200,115,0xffffff);
		m.setDefaultFonts("simsun.ttc");
		m.setRoundedFrame();
		//设置仪表盘中心在（100，100），半径为85像素，并且跨度在-90到+90
		m.setMeter(100, 100, 85, -90, 90);
		//仪表盘的界限0到100，每个刻度以20为单位，较小的刻度以10为单位，最小的以5为刻度。
		m.setScale(0, 100,20,10,5);
//		String str[] = {"test","test2","test3","test2","test3"};
//		m.setScale(0, 100, str);
//		m.setMeterColors(0xD81212);//设置仪表盘边缘的颜色
//		m.setLineWidth(3);//设置仪表盘边缘的宽度
//		m.setTickLength(3,10);//让仪表盘的刻度在外面显示
//		m.setSize(200, 150);//设置大小，参数效果同初始化时的大小
//		m.setBorder(150);
//		m.setTransparentColor(0);
//		m.addTitle("Test");
//		m.addRing(8, 5, 0x000000);//添加一个点，第一参数外半径，二内半径，三是颜色
		//设置0-60为绿色（0X66FF66）区域
		int clor[]={0x000000,0xFFE743,0x000060,0xFFFFE0,0x0000B0,0xFFF0B0,0x00100,0xFFE743};
		//m.addZone(0, 60,70,85,0x00aa00);
		m.addZone(0, 60,70,85,m.gradientColor(clor));
//		m.setBackground(0x333333,0x66ff66,4);//第一个参数设置背景颜色，第二个设置背景边缘颜色，第三个设置阴影
		//设置60-80为黄色（ffff33）区域
		m.addZone(60, 80,70,85,0xcccc00);
		//设置80-100为红色区域（ff6666）
		m.addZone(80, 100,70,85,0xaa0000);
		m.addZone(0, 100,70,70,0x000000);
		//添加一个文本标签centered在100和60下方，使用12号，Arial Bold字体
		m.addText(100, 60,"中文","宋体",12,Chart.TextColor, Chart.Center);
		//添加一个文本标签在右上角用来显示值，字体为Arial，字号为8，颜色为0xffffff
		//格式化为2位小数，并使用黑色背景，1像素的3D阴影
		m.addText(156,8, m.formatValue(value, "2"), "Arial",8,0xffffff).setBackground(0x000000, 0, -1);
		//添加一个半透明的蓝色点使用黑色边框在具体的值上
		m.addPointer(value, 0xffffff,0x000000).setZOrder(0x100);
		//输出图形
//		String chart1URL = m.makeSession(request, "chart1");
		viewer.setImage(m.makeImage());
	}
	
	public static void main(String[] args) {
		DemoModule demo = new MeterDemo();
		
		JFrame frame = new JFrame(demo.toString());
		frame.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){System.exit(0);}
		});
		frame.getContentPane().setBackground(Color.white);
		
		ChartViewer viewer = new ChartViewer();
		demo.createChart(viewer, 0);
		frame.getContentPane().add(viewer);
		frame.pack();
		frame.setVisible(true);
	}
}
